<!DOCTYPE html>
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="content-type">
    <title>ch01-01</title>
    <link href="css/style.css" rel="stylesheet" type="text/css">
    <link rel="stylesheet" href="thumbnailviewer.css" type="text/css">
    <script src="thumbnailviewer.js" type="text/javascript">

/***********************************************
* Image Thumbnail Viewer Script- © Dynamic Drive (www.dynamicdrive.com)
* This notice must stay intact for legal use.
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

</script> </head>
  <body>
    <div class="os1">1.1 音频常识 </div>
    <p> 本节介绍音频和采样原理，先介绍声音的常识，然后简要描述声音转为电信号的原理（麦克风功能），
      电信号再进行数字采样就得到声音数据（声卡采集功能）。声音转为电信号之后，称之为音频（Audio）信号，电脑存储的声音数据文件，就是音频文件。声卡采集的原始数据即
      脉冲编码调制 （Pulse Code Modulation,PCM）数据， 这是所有音频编码器的源头。 </p>
    <div class="os2">1.1.1 声音是什么</div>
    <p> 这是初中物理的内容，声音由物体振动产生的声波，通过介质（气体、液体、固体）传播，并能通过人或动物听觉感知到的现象。最初发出振动的物体就叫声源。
    </p>
    <center><img src="images/ch01/ch01-01-01.jpg"></center>
    <br>
    这是初中物理示范常用的音叉和锤子，其实同学们拍拍巴掌比这个响亮多了。无论是物体碰撞还是靠嗓子喊、乐器演奏等等，声音在生活中无处不在。注意声音不能在真空传
    播，因为声音的振动依赖实体介质（固体、液体、气体）。<br>
    <br>
    声音与水面波、电磁波等其他波形类似，有两种基本特性：频率、振幅。频率就是每秒钟波形振动次数，比如蜜蜂翅膀每秒振动翅膀约为200-240次，
    其频率就是200-240Hz，蜜蜂振动翅膀的频率正好能被人耳听到，所以蜜蜂靠近时能听到“嗡嗡”声。<b>人耳可以听到的频率范围是 20-20000
      Hz，而正常说话的语音频率范围一般在 300-3400 Hz。</b><br>
    <br>
    声音的振幅就是常说的声音响不响，物理上用分贝 dB 来描述声音响度，分贝是一种相对的描述，1 dB
    大约是人刚刚能感觉到的声音，分贝数越大就越吵闹，常见响度分类：<br>
    0 - 20 分贝：很静、几乎感觉不到。<br>
    20 - 40 分贝：安静、犹如轻声语。<br>
    40 - 60 分贝：一般普通室内谈话。<br>
    60 - 70 分贝：吵闹、有损神经。<br>
    70 - 90 分贝：很吵、神经细胞受到破坏。<br>
    90 - 100 分贝：吵闹加剧、听力受损。<br>
    100 - 120 分贝：难以忍受、呆一分钟即暂时致聋。<br>
    <br>
    声音还有第三种特性叫音色，比如正弦波、锯齿波、矩形波等，波形形状差异，就是音色的体现。不同乐器的音色明显不一样，比如钢琴和小提琴演奏同一首曲子，声音听起
    来明显不同，不同的人唱同一首歌区别很大，里面就有音色的差异。音乐人最讲究音色，当然我们搞电脑的就不讲究这些了。<br>
    <br>
    <div class="os2">1.1.2 声音如何变为电信号</div>
    <p>人的声音在空气中传播几百米就已经算很远的了，但是我们打电话可以跨越国家甚至星球，这肯定不是靠空气传播所能到达的。
      我们要感谢下面这个老头——亚历山大·格拉汉姆·贝尔：<br>
    </p>
    <center><img src="images/ch01/ch01-01-02.jpg"></center>
    <p>贝尔的故事非常多，大家可以自行百度，这里就不背书了。</p>
    <p>将声音信号转换为电信号的能量转换器件就是麦克风（学名传声器），麦克风最初是通过电阻转换声音为电信号，后来发展为通过电感、电容等等器件进行声电转换。
      目前广泛使用的是电容麦克风和驻极体麦克风，我们以电容麦克风举例：</p>
    <center><img src="images/ch01/ch01-01-03.jpg"></center>
    图中标出了电容麦克风的三个基本器件：电容（由振膜和基板组成）、电池和电阻，三者连接形成一个回路，在电阻两端采集电信号变化。<br>
    上图中间蓝色的两个竖条就是电容，电容有两个部分组成：对外的薄片是振膜，对内连电池的部分是基板。当外面有声音振动时，振膜随着声音振动而振动，电容会发生变
    形，即对声音敏感。电容的变形导致电容存储的电荷数发生变化，使得整个电路中的电流都跟着变化，采集这种电流的变化就反映了声音的振动，也就将声音振动转化为了电
    信号。<br>
    电容式麦克风原理参考： <a href="http://zixun.jia.com/article/393153.html" target="new">
      http://zixun.jia.com/article/393153.html </a><br>
    <br>
    反过来，如何将电信号转为声音振动呢？这就是扬声器的功能。扬声器就是将电信号转变为声音信号的能量转换器件，俗称喇叭。喇叭的种类很多，比如动圈式（电动式）、
    电容式（静电式）、压电式（晶体或陶瓷）、电磁式（压簧式）、电离子式和气动式扬声器等。以动圈式扬声器为例：<br>
    <br>
    <center><img src="images/ch01/ch01-01-04.jpg"></center>
    动圈式扬声器里比较关键的三个组成部分是磁体（永久磁铁）、音圈、纸盆。永久磁铁的磁场是固定的。音圈就是铜丝绕成的线圈，线圈通电时形成一个电磁场，电磁场的极
    性和强度随着流经的电流变化而变化。我们学过两块磁铁的同性相斥、异性相吸，永久磁铁的磁场固定，而线圈电磁场随着电流变化而变化，两个磁场之间的斥力或吸力会促
    使线圈位置来回移动，而纸盆是与线圈固定在一起的，纸盆随着线圈位置移动而移动，纸盆振动发出声波，就是我们听到的声音。其能量转换流程为：电能-&gt;磁能
    -&gt; 动能-&gt;声音能量。<br>
    动圈式扬声器原理参考： <a href="http://www.eritten.com/Article/article-26811624031_1.html"
      target="new"> http://www.eritten.com/Article/article-26811624031_1.html </a>
    <br>
    <br>
    <div class="os2">1.1.3 电信号如何变为PCM</div>
    <p>
      声音信号转化为电信号之后，是以时域上的连续波形式存在（模拟信号），而计算机处理的数据都是离散数值（数字信号）。将连续波转换成时域上离散数值的过程就是数字采样。
      1928年美国电信工程师 Harry Nyquist 推出采样定理：为了不失真地恢复模拟信号，采样频率应该不小于模拟信号频谱中最高频率的2倍。即
      SampleRate ≥ 2*Fmax。奈奎斯特采样定理是所有模/数转换和数/模转换的基础。</p>
    <p>脉冲编码调制（Pulse Code
      Modulation，PCM）就是把一个时间连续，取值连续的模拟信号变换成时间离散，取值离散的数字信号后在信道中传输。脉冲编码调制就是对模拟信号先抽样，再对样值
      幅度量化，编码的过程。将声音的电信号转换成为离散数值的过程就是声卡的信号采集功能，声卡采集信号的核心器件就是模/数转换器。如果通过声卡播放数字音频，
      那么就是数/模转换器的功能。声卡工作原理图如下所示：<br>
    </p>
    <center><img src="images/ch01/ch01-01-05.jpg"></center>
    <br>
    声卡工作原理参考：<a href="http://www.elecfans.com/baike/zhujipeijian/shengka/20091226147279.html"
      target="new">
      http://www.elecfans.com/baike/zhujipeijian/shengka/20091226147279.html </a>
    <br>
    <br>
    声音信号采集和播放经常使用的三个参数为采样频率（SampleRate）、采样位数（SampleSize）、声道数（ChannelCount）。声道数好理
    解，一个音箱是单声道，两个音箱是双声道，立体声耳机也是双声道。单声道采集播放时使用一路数据，双声道采集播放时使用两路数据，如果有更多声道，就会用到更
    多路的数据。我们下面来看采样频率。<br>
    声音信号的采样频率有两类常用的倍率，第一类以人说话的语音频率为基础，一般语音频率是 300-3400Hz，向上取整约为 4kHz ，
    根据奈奎斯特采样定理，采样频率至少 8kHz。通常打电话的语音采样都是 8kHz 采样， 第一类采样信号的倍率就是以 8kHz 为基础： <br>
    <br>
    <table class="tabel">
      <tbody>
        <tr class="d1">
          <td style="width: 200px;"><b>采样频率</b></td>
          <td style="width: 200px;"><b>名称</b><br>
          </td>
          <td><b>描述</b></td>
        </tr>
        <tr>
          <td style="width: 200px;"><b>8,000 Hz</b></td>
          <td style="width: 200px;"> Narrowband，窄带 </td>
          <td> 电话语音中常用。 </td>
        </tr>
        <tr class="d1">
          <td style="width: 200px;">12,000 Hz</td>
          <td style="width: 200px;"> Medium-band，中带 </td>
          <td> 很少用，音频库Opus定义的中带语音信号采样频率。<br>
          </td>
        </tr>
        <tr>
          <td style="width: 200px;">16,000 Hz</td>
          <td style="width: 200px;"> Wideband，宽带 </td>
          <td> 多数现代的 VoIP 和 VVoIP通信产品中常用。</td>
        </tr>
        <tr class="d1">
          <td style="width: 200px;">24,000 Hz</td>
          <td style="width: 200px;"> Super-wideband，超宽带<br>
          </td>
          <td> 很少用，音频库Opus定义的超宽带，而其他编码通常用32kHz作为超宽带。<br>
          </td>
        </tr>
        <tr>
          <td style="width: 200px;">32,000 Hz</td>
          <td style="width: 200px;"> Ultra-wideband 或 Super-wideband，超宽带<br>
          </td>
          <td> miniDV 数字录像机、录像带中的录音常用该采样频率，FM 广播和高品质无线麦克风也用到。音频库Speex处理的采样频率上限。
          </td>
        </tr>
        <tr class="d1">
          <td style="width: 200px;"><b>48,000 Hz</b></td>
          <td style="width: 200px;"> Fullband，全带 </td>
          <td> 专业视频录像采用的标准采样频率，DV、数字电视、DVD、电影等常用。音频库Opus处理的采样频率上限。<br>
          </td>
        </tr>
        <tr>
          <td style="width: 200px;">96,000 Hz</td>
          <td style="width: 200px;"> --<br>
          </td>
          <td> DVD-Audio，BD-ROM， HD DVD 音轨常用的采样频率，专业音频设备通常采用。<br>
          </td>
        </tr>
        <tr class="d1">
          <td style="width: 200px;">192,000 Hz</td>
          <td style="width: 200px;"> --<br>
          </td>
          <td> DVD-Audio，BD-ROM， HD DVD 音轨常用的采样频率，专业音频设备通常采用。 </td>
        </tr>
        <tr>
          <td style="width: 200px;">384,000 Hz</td>
          <td style="width: 200px;"> --<br>
          </td>
          <td> 高端声卡设备、高端手机设备支持的采样频率。</td>
        </tr>
      </tbody>
    </table>
    <br>
    在 8k 倍率系列里面，电脑声卡一般支持 8kHz 和 48kHz，较好的声卡最高也有支持到 192kHz 的，在进行语音相关的软件开发时建议用
    8kHz 或 48kHz。<br>
    <br>
    第二类倍率是以人耳听到的声音频率为基础，人耳听到的上限是 20 kHz，理论上说超过 40kHz 采样都可以，但是 CD 唱片的标准采样率是一个坑爹的
    44.1 kHz，其由来参考下文：<br>
    <a href="https://blog.csdn.net/Openking/article/details/42501287" target="new">https://blog.csdn.net/Openking/article/details/42501287</a>
    <br>
    CD 倍率系列如下表所示：<br>
    <br>
    <table class="tabel">
      <tbody>
        <tr class="d1">
          <td style="width: 200px;"><b>采样频率</b></td>
          <td style="width: 200px;"><b>名称</b><br>
          </td>
          <td><b>描述</b></td>
        </tr>
        <tr>
          <td style="width: 200px;">11,025 Hz</td>
          <td style="width: 200px;"> 1/4 CD采样率 </td>
          <td> 低质量的 PCM、MPEG audio、低音炮音频分析时使用。<br>
          </td>
        </tr>
        <tr class="d1">
          <td style="width: 200px;">22,050 Hz</td>
          <td style="width: 200px;"> 1/2 CD采样率 </td>
          <td> 低质量的 PCM、MPEG audio、低频的音频能量分析时使用。<br>
          </td>
        </tr>
        <tr>
          <td style="width: 200px;"><b>44,100 Hz</b></td>
          <td style="width: 200px;"> CD采样率 </td>
          <td> CD 唱片、MPEG-1 audio 编码（VCD、SVCD、MP3），PAL制式视频录像机使用。<br>
          </td>
        </tr>
        <tr class="d1">
          <td style="width: 200px;">88,200 Hz</td>
          <td style="width: 200px;"> 2 倍CD采样率<br>
          </td>
          <td> 专业录音设备、高端音乐场景等使用。<br>
          </td>
        </tr>
        <tr>
          <td style="width: 200px;">176,400 Hz</td>
          <td style="width: 200px;"> 4 倍CD采样率<br>
          </td>
          <td> HDCD 录音机、专业 CD 产品应用场景使用。 </td>
        </tr>
        <tr class="d1">
          <td style="width: 200px;">352,800 Hz</td>
          <td style="width: 200px;"> 8 倍CD采样率<br>
          </td>
          <td> Digital eXtreme Definition (DXD) 音频格式使用，制作Super Audio CD。<br>
          </td>
        </tr>
      </tbody>
    </table>
    <br>
    在 CD 倍率系列里面，电脑声卡都支持标准CD采样率 44100 Hz，也可能支持 1/4 和 1/2 CD采样率。如果程序开发时需要用到 CD
    倍率系列，建议直接用 44100 Hz。<br>
    <br>
    这里顺便提一下重采样（Resampling）的概念，比如 44100 Hz 和 48000
    Hz的信号明显不兼容，倍率不同，无法对齐，如果希望两种信号互相转换，那么就需要进行重采样。重采样一般采用插值的方法实现，音频库 Speex
    自带重采样函数，后面教程再介绍。<br>
    <br>
    声音信号采集第二个常用参数是采样位数，以 8kHz 单声道采样为例，每秒采集 8000 个数值，每个采样数值占用多少比特位就是采样位数，最常用的是 8
    bit、16 bit，高端声卡也支持 24 bit、32 bit采样位数。采样位数越多，声音量级就越精细。与采样位数密切相关的是数值点的数据格式，一般
    8 bit 采用无符号整数表示，16bit、24 bit、32bit采用有符号整数表示；另外，32 bit也可以用浮点数表示，当使用浮点数采样时，取值为
    -1.0 到 +1.0 之间的浮点数。<b>采样位数和数据格式中，最常用的是 8 bit无符号整数和 16 bit有符号整数。 </b><br>
    <br>
    采样的数据速率就是指每秒所有声道采样数据的总量，计算公式为：<br>
    <br>
    <div style="color: red"> <b>采样频率 * 采样位数 * 声道数 = 采样数据速率</b> </div>
    <br>
    对于采样频率 8kHz、采样位数 8bit、单声道（以后简略记为 8kHz 8bit 1ch ）的音频信号，其数据速率为 64 kbps。64
    kbps数据速率对于目前常见的20Mbps甚至100Mbps的家庭宽带来说是微乎其微的， 8kHz 8bit 1ch 的音频信号数据可以直接在 UDP
    套接字里面发送，都不需要压缩。<br>
    对于高精度的音频采样，比如 192kHz 16bit 2ch 的音频信号，数据速率为 6144 kps，就是比较大的数值了，比如十多年前 ADSL
    上网时只有 2Mbps
    的带宽，没法传输未压缩的高精度音频采样，这只是音频，还没算视频数据速率。所以有限的带宽促进了音频、视频编码和解码技术的进步，这也是编写本教程的主旨——推广开源的
    音频、视频编解码技术。<br>
    <br>
    <div class="os2">1.1.4 音频编码和解码</div>
    <p>
      不论是音频还是视频的压缩编码，其算法的核心内容都是一堆计算公式，进行时域和频域的变换，分析并去除冗余信息。公式和理论不是本教程关注的东西，这些公式都有专门的信号
      处理和多媒体技术方面教材，本教程关注的是开源的音视频编码库如何使用，只讲代码层面的知识。 </p>
    音频编码的目标就是尽可能压缩原始采样数据，节省带宽，方便文件存储和网络传输。音频编码大致可以分为两类：无损编码和有损编码。第一类是无损编码，比如本教程后
    面介绍的 FLAC 是一种对原始 PCM
    进行无损压缩的编码库。无损编码的特点是信息解码后不会有任何的丢失，解码后每一比特都和原始采样数据一致。无损编码最大的特点是大，占用空间或带宽很多。<br>
    <br>
    实际中使用最多的都是有损编码，一般是使用离散余弦变换等数学方法将信号从时域转换到频域，将人耳不敏感的频域部分信息过滤掉，然后进行编码。有损音频编码常见的
    有：MP3、WMA、AAC、Vorbis、Speex、Opus等等。有损编码也都有相应的解码器，解码器就是将压缩后的数据在一定程度上还原为 PCM
    数据，解码得到的 PCM 数据与原始采样数据是有差异的，这也是称之为有损编码的原因。<br>
    <br>
    本文主要关注开源的音频编解码库，如 FLAC、Vorbis、Speex、Opus 等，而 AAC、MP3 和 WMA
    都是专利授权编码，本教程不涉及。需要特别注意的是 AAC 编码，虽然有 FAAC/FAAD、FDK-AAC 等开源实现代码，但是 AAC
    这项技术本身有专利保护，杜比实验室旗下的 Via Licensing 公司专门负责 AAC 专利授权收费，虽然代码不要钱，但是只要使用了 AAC
    技术，Via Licensing 公司就能收专利费。在没有购买授权的情况下，商业产品不能使用任何 AAC 技术。<br>
    <br>
    <div style="color: red"> <b>真正开源免费的只有 Xiph.Org 基金会研发管理的音频编解码库，所以本教程专注
        Xiph.Org 基金会的编解码技术。</b><br>
    </div>
    <br>
    <br>
    <table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
      <tbody>
        <tr>
          <td style="width: 40%;">
            <div style="text-align: center;"><a href="ch01-00.htm"><img class="pic"
                  style="width: 32px; height: 32px;" alt="prev" src="images/pics/prev.png"></a></div>
          </td>
          <td style="width: 20%;">
            <div style="text-align: center;"><a href="contents.htm"><img class="pic"
                  style="width: 32px; height: 32px;" alt="contents" src="images/pics/contents.png"></a></div>
          </td>
          <td style="width: 40%;">
            <div style="text-align: center;"><a href="ch01-02.htm"><img class="pic"
                  style="width: 32px; height: 32px;" alt="next" src="images/pics/next.png"></a></div>
          </td>
        </tr>
      </tbody>
    </table>
  </body>
</html>
